//给定一个非负整数 c ，你要判断是否存在两个整数 a 和 b，使得 a² + b² = c 。 
//
// 
//
// 示例 1： 
//
// 
//输入：c = 5
//输出：true
//解释：1 * 1 + 2 * 2 = 5
// 
//
// 示例 2： 
//
// 
//输入：c = 3
//输出：false
// 
//
// 
//
// 提示： 
//
// 
// 0 <= c <= 2³¹ - 1 
// 
//
// Related Topics 数学 双指针 二分查找 👍 430 👎 0


package com.leetcode.editor.cn;
public class P633SumOfSquareNumbers{
     public static void main(String[] args) {
          Solution solution = new P633SumOfSquareNumbers().new Solution();
         System.out.println(solution.judgeSquareSum(25));
     }
     //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public boolean judgeSquareSum(int c) {
        long i = 0, j = (int) Math.sqrt(c);
        while (i <= j) {
            long result = (i * i) + (j * j);
            if (result == c) {
                return true;
            } else if (result < c) {
                i++;
            }else{
                j--;
            }
        }
        return false;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}